<?php
// 设置响应头为 JSON 格式
header('Content-Type: application/json');

// 1. 获取请求方法
$method = $_SERVER['REQUEST_METHOD'];

// 2. 获取客户端 IP 和代理 IP
$clientIp = $_SERVER['REMOTE_ADDR'] ?? 'Unknown';
$proxyIps = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? null; // 代理服务器传递的原始 IP

// 3. 获取 IP 归属地（调用免费 API，需网络）
function getIpGeo($ip) {
    $url = "http://ip-api.com/json/{$ip}?fields=status,country,regionName,city,isp";
    $response = @file_get_contents($url); // 忽略警告
    return $response ? json_decode($response, true) : ['error' => 'API 请求失败'];
}

$ipGeo = getIpGeo($clientIp);

// 4. 解析请求数据
$requestData = [];
if ($method === 'GET') {
    $requestData = $_GET;
} else {
    // 处理非 GET 请求的原始数据（JSON/Form-Data）
    $rawInput = file_get_contents('php://input');
    if (strpos($_SERVER['CONTENT_TYPE'] ?? '', 'application/json') !== false) {
        $requestData = json_decode($rawInput, true) ?? [];
    } else {
        parse_str($rawInput, $requestData); // 解析 Form-Data
    }
}

// 5. 构造响应数据
$response = [
    'meta' => [
        'method' => $method,
        'client_ip' => $clientIp,
        'proxy_ips' => $proxyIps ? explode(',', $proxyIps) : null,
        'ip_geolocation' => $ipGeo,
    ],
    'data' => $requestData,
    'headers' => getallheaders(),
];

// 6. 返回 JSON 响应
echo json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
